(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Kızılötesi Sensör için Basit Subscriber Yazma

Description: Bilgisayarda, kızılötesi sensör için cpp ile Subscriber yazma

Tutorial Level: BEGINNER

Next Tutorial: Kızılötesi Sensör Verisini Görselleştirme

Catkin çalışma alanında evarobot_infrared_subs adında paket oluşturulur.

> cd ~/catkin_ws/src
> catkin_create_pkg evarobot_infrared_subs sensor_msgs rospy roscpp

Oluşturulan paketin içerinde /src klasörü altında infrared_listener.cpp isminde c++ dosyası oluşturulur. Örnek kapsamında kızılötesi sensörlerden sadece 0 nolu sensörün okuması yapılacaktır.

> cd ~/catkin_ws/src/evarobot_infrared_subs
> mkdir -p ~/catkin_ws/src/evarobot_infrared_subs/src
> cd src
> gedit infrared_listener.cpp

infrared_listener.cpp dosyasının içerisine yazılacak kod aşağıda verilmektedir.

   1 #include "ros/ros.h"
   2 #include "sensor_msgs/Range.h"
   3 
   4 /**
   5  * Bu örnekte evarobot üzerindeki kızılötesi sensörleri ROS sistemi üzerinden okuyan basit bir subscriber yapılmaktadır.
   6  */
   7 
   8 /**
   9  * Dinlenen topikten veri geldiğinde çalışacak callback fonksiyonudur.
  10  * Bu örnekte, görevi gelen mesafe verileri ekrana yazdırmakdır.
  11  */
  12 void chatterCallback(const sensor_msgs::Range::ConstPtr& msg)
  13 {
  14   ROS_INFO("Infrared Seq: [%d]", msg->header.seq);
  15   ROS_INFO("Infrared Range: [%f]", msg->range);
  16 }
  17 
  18 int main(int argc, char **argv)
  19 {
  20   /**
  21    * ROS ilklendiriliyor.
  22    */
  23   ros::init(argc, argv, "infrared_listener");
  24 
  25   ros::NodeHandle n;
  26 
  27   /**
  28    * Subscriber tanımlanıyor.
  29    * İlk parametre olarak dinlenecek topiğin adı, ardından bufferın büyüklüğü ve callback fonksiyonu tanımlanmaktadır.
  30    */
  31   ros::Subscriber sub = n.subscribe("sensor/ir0", 1000, chatterCallback);
  32 
  33   ros::spin();
  34 
  35   return 0;
  36 }

Paket derlenirken yazdığımız cpp dosyasını derlemesi için CMakeLists.txt dosyasını aşağıdaki gibi düzenliyoruz.

> cd ..
> gedit CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(evarobot_infrared_subs)

find_package(catkin REQUIRED COMPONENTS
  sensor_msgs
  roscpp
  rospy
)

catkin_package()

include_directories(
  ${catkin_INCLUDE_DIRS}
)

add_executable(infrared_listener src/infrared_listener.cpp)
add_dependencies(infrared_listener sensor_msgs_generate_messages_cpp)
 target_link_libraries(infrared_listener
   ${catkin_LIBRARIES}
 )

Yazdığımız ROS paketini derliyoruz.

> cd ~/catkin_ws/
> catkin_make

Yazdığımız infrared_listener düğümünü aşağıdaki gibi çalıştırıldığında, okunan verilerin ekrana yazılması beklenmektedir.

> rosrun evarobot_infrared_subs infrared_listener

Wiki: evarobot_infrared/Tutorials/indigo/Kizilotesi Basit Subscriber Yazma (last edited 2015-09-02 10:00:53 by makcakoca)